package com.pro.util.tokenUtil;

import cz.mallat.uasparser.UserAgentInfo;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class TokenUtil {

    //token 用于验证用户是否登录
    //当用户第一次请求验证登录成功时服务端生成一个字符串也就是token发送给客户端
    //当下一次客户端再次请求服务端时，服务端的token与客户端的token一致则判断用户已登陆，返回数据给客户端

    public String token(String agent,String name)throws IOException {
        // token:访问端-用户名6位加密-时间-随机4位数加密
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("token:");

        // 获得请求端，PC / MOBILE
        UserAgentInfo userAgentInfo = UserAgentUtil.getUasParser().parse(agent);
        if (userAgentInfo.getDeviceType().equals(UserAgentInfo.UNKNOWN)) {
            if (UserAgentUtil.CheckAgent(agent)) {
                stringBuffer.append("MOBILE-");
            } else {
                stringBuffer.append("PC-");
            }
        } else if (userAgentInfo.getDeviceType()
                .equals("Personal computer")) {
            stringBuffer.append("PC-");
        } else {
            stringBuffer.append("MOBILE-");
        }

        // 用户名6位加密
        stringBuffer.append(MD5.getMd5(name,6));

        // 时间
        stringBuffer.append(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));

        // 随机4位数 MD5加密
        stringBuffer.append(MD5.getMd5(String.valueOf(MD5.getRandomCode()),6));

        return stringBuffer.toString();
    }
}
